package cn.tedu.charging.common.utils;

import java.util.Arrays;
import java.util.List;
import java.util.Random;

public class NickNameGenerator {


        // 300个常见中文姓氏
        private static final List<String> SURNAMES = Arrays.asList(
                "李", "王", "张", "刘", "陈", "杨", "赵", "黄", "周", "吴",
                "徐", "孙", "胡", "朱", "高", "林", "何", "郭", "马", "罗",
                "梁", "宋", "郑", "谢", "韩", "唐", "冯", "于", "董", "萧",
                "程", "曹", "袁", "邓", "许", "傅", "沈", "曾", "彭", "吕",
                "苏", "卢", "蒋", "蔡", "贾", "丁", "魏", "薛", "叶", "阎",
                "余", "潘", "杜", "戴", "夏", "钟", "汪", "田", "任", "姜",
                "范", "方", "石", "姚", "谭", "廖", "邹", "熊", "金", "陆",
                "郝", "孔", "白", "崔", "康", "毛", "邱", "秦", "江", "史",
                "顾", "侯", "邵", "孟", "龙", "万", "段", "雷", "钱", "汤",
                "尹", "黎", "易", "常", "武", "乔", "贺", "赖", "龚", "文",
                "庞", "樊", "兰", "殷", "施", "陶", "洪", "翟", "安", "颜",
                "倪", "严", "牛", "温", "芦", "季", "俞", "章", "鲁", "葛",
                "伍", "申", "尤", "韦", "昌", "苗", "凤", "花", "方", "俞",
                "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑",
                "薛", "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝",
                "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐",
                "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和",
                "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹",
                "狄", "米", "贝", "明", "臧", "计", "伏", "成", "戴", "谈",
                "宋", "茅", "庞", "熊", "纪", "舒", "屈", "项", "祝", "董",
                "梁", "杜", "阮", "蓝", "闵", "席", "季", "麻", "强", "贾",
                "路", "娄", "危", "江", "童", "颜", "郭", "梅", "盛", "林",
                "刁", "钟", "徐", "邱", "骆", "高", "夏", "蔡", "田", "樊",
                "胡", "凌", "霍", "虞", "万", "支", "柯", "昝", "管", "卢",
                "莫", "经", "房", "裘", "缪", "干", "解", "应", "宗", "丁",
                "宣", "贲", "邓", "郁", "单", "杭", "洪", "包", "诸", "左",
                "石", "崔", "吉", "钮", "龚", "程", "嵇", "邢", "滑", "裴",
                "陆", "荣", "翁", "荀", "羊", "於", "惠", "甄", "曲", "家",
                "封", "芮", "羿", "储", "靳", "汲", "邴", "糜", "松", "井",
                "段", "富", "巫", "乌", "焦", "巴", "弓", "牧", "隗", "山",
                "谷", "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋",
                "仲", "伊", "宫", "宁", "仇", "栾", "暴", "甘", "钭", "厉",
                "戎", "祖", "武", "符", "刘", "景", "詹", "束", "龙", "叶",
                "幸", "司", "韶", "郜", "黎", "蓟", "薄", "印", "宿", "白",
                "怀", "蒲", "邰", "从", "鄂", "索", "咸", "籍", "赖", "卓",
                "蔺", "屠", "蒙", "池", "乔", "阴", "郁", "胥", "能", "苍",
                "双", "闻", "莘", "党", "翟", "谭", "贡", "劳", "逄", "姬",
                "申", "扶", "堵", "冉", "宰", "郦", "雍", "郤", "璩", "桑",
                "桂", "濮", "牛", "寿", "通", "边", "扈", "燕", "冀", "郏",
                "浦", "尚", "农", "温", "别", "庄", "晏", "柴", "瞿", "阎",
                "充", "慕", "连", "茹", "习", "宦", "艾", "鱼", "容", "向",
                "古", "易", "慎", "戈", "廖", "庾", "终", "暨", "居", "衡",
                "步", "都", "耿", "满", "弘", "匡", "国", "文", "寇", "广",
                "禄", "阙", "东", "欧", "殳", "沃", "利", "蔚", "越", "夔",
                "隆", "师", "巩", "厍", "聂", "晁", "勾", "敖", "融", "冷",
                "訾", "辛", "阚", "那", "简", "饶", "空", "曾", "毋", "沙",
                "乜", "养", "鞠", "须", "丰", "巢", "关", "蒯", "相", "查",
                "后", "荆", "红", "游", "竺", "权", "逯", "盖", "益", "桓",
                "公", "万俟", "司马", "上官", "欧阳", "夏侯", "诸葛", "闻人", "东方", "赫连", "皇甫"
        );

        // 200个常用中文名字单字
        private static final List<String> NAME_CHARS = Arrays.asList(
                "伟", "强", "磊", "军", "洋", "勇", "杰", "涛", "超", "明",
                "刚", "平", "辉", "浩", "宇", "鹏", "飞", "鑫", "波", "斌",
                "亮", "健", "伟", "杰", "涛", "明", "超", "秀", "强", "磊",
                "军", "洋", "勇", "艳", "杰", "娟", "涛", "兰", "霞", "平",
                "刚", "英", "辉", "玉", "浩", "萍", "宇", "丹", "鹏", "红",
                "芳", "娜", "敏", "静", "丽", "娟", "艳", "玲", "霞", "秀",
                "玉", "萍", "红", "丹", "颖", "华", "英", "梅", "雪", "兰",
                "云", "婷", "欣", "晶", "宁", "燕", "洁", "琳", "莹", "倩",
                "怡", "璇", "妍", "璐", "娅", "琦", "雯", "茜", "婕", "瑶",
                "玥", "蕾", "薇", "蓓", "珊", "娇", "晨", "旭", "阳", "晓",
                "星", "月", "天", "子", "一", "然", "睿", "哲", "思", "雨",
                "文", "乐", "嘉", "安", "宁", "凡", "宇", "轩", "梓", "浩",
                "泽", "瑞", "霖", "航", "昊", "宸", "辰", "熙", "峻", "皓",
                "洋", "鑫", "凯", "瑜", "瑾", "玮", "琛", "琰", "珣", "璟",
                "琨", "琦", "琮", "璇", "璐", "衡", "逸", "晟", "晖", "烨",
                "煜", "煊", "熠", "灿", "炎", "焱", "磊", "磐", "硕", "砺",
                "睿", "智", "聪", "慧", "淳", "朴", "谦", "良", "德", "孝",
                "仁", "义", "礼", "信", "忠", "勇", "毅", "刚", "柔", "和",
                "顺", "康", "泰", "安", "宁", "福", "寿", "喜", "吉", "祥"
        );

        private static final Random random = new Random();

        /**
         * 生成随机中文昵称(姓氏+1-2个名字字)
         * @return 随机中文昵称
         */
        public static String generate() {
            // 随机选择姓氏
            String surname = SURNAMES.get(random.nextInt(SURNAMES.size()));

            // 随机选择1-2个名字字
            int nameLength = random.nextInt(2) + 1;
            StringBuilder name = new StringBuilder();
            for (int i = 0; i < nameLength; i++) {
                name.append(NAME_CHARS.get(random.nextInt(NAME_CHARS.size())));
            }

            return surname + name.toString();
        }


}
